In many computing scenarios, two or more devices that are mutually accessible (e.g., over a wired or wireless network) may endeavor to establish a communication session that is encrypted to deter eavesdropping or the leak of sensitive information, and/or authenticated such that each device may verify that received messages were generated by the other device. For example, an asymmetric cryptographic key exchange algorithm, such as the RSA algorithm, may be implemented to permit two devices to exchange public keys for a session, which may be used in conjunction with the corresponding (and retained as secret) private keys in order to enable encrypted and authenticated communication during a communications session.
When two devices endeavor to establish such a communication session, a handshake protocol may be used to identify supported protocols and to exchange keys. For example, the Transport Layer Security (TLS) protocol may be implemented by each device to initiate the handshake; to disclose and choose encryption algorithms, compression algorithms, public keys, and authentication certificates; and to signal a commencement of communication using the negotiated algorithms. Once the details of the communication session are determined, the devices may establish the secure connection and may initiate communication over the encrypted channel.